package com.map;

import java.util.*;

/**
 * 认识map体系的特点：按照键无序、不重复、无索引、值不做要求
 */
public class MapDemo1 {
    public static void main(String[] args) {
        //1.创建一个map集合对象,map和泛型不支持基本类型
        Map<String,Integer> map=new HashMap<>();//用的最多
        //添加元素
        map.put("鸿星尔克",3);
        map.put("枸杞",100);
        map.put("java",1);
        map.put("java",100);//，键是不能重复的覆盖前面的值
        map.put(null,null);
        System.out.println(map);
        //{null=null, java=100, 枸杞=100, 鸿星尔克=3    无序的

        //linkHashMap是有序的
        Map<String,Integer> maps=new LinkedHashMap<>();//用的最多
        //添加元素
        maps.put("鸿星尔克",3);
        maps.put("枸杞",100);
        maps.put("java",1);
        maps.put("java",100);//，键是不能重复的覆盖前面的值
        maps.put(null,null);
        System.out.println(maps);
        //{鸿星尔克=3, 枸杞=100, java=100, null=null}    有序的



        //map集合的常用API
        //1.添加元素
        map.put("华为",100);
        //2.清空集合
        maps.clear();
        //3.判断集合是否为空
        boolean empty = map.isEmpty();
        //4.根据键获取对应值  get(object key)
        System.out.println(map.get("java"));
        System.out.println(map);
        //5.根据键删除整个元素（删除键会返回键的值）
        Integer java = map.remove("java");
        System.out.println(java);

        //6.判断是否含有某个键
        boolean java1 = map.containsKey("java");

        //7.判断是否包含某个value
        boolean b = map.containsValue(100);
        System.out.println(b);

        //8.获得map集合的长度
        int size = map.size();
        System.out.println(map);
        System.out.println(size);

        //9.获取全部键的集合，keySet()   返回set集合(可以用来遍历map集合)
        Set<String> keyset = map.keySet();
        System.out.println(keyset);
        //获取全部值的集合   values()   返回collection集合
        Collection<Integer> values = map.values();
        System.out.println(values);

        //合并其他集合
        Map<String,Integer> map1=new HashMap<>();
        map1.put("java",100);
        map1.put("python",100);
        Map<String,Integer> map2=new HashMap<>();
        map2.put("java",1);
        map2.put("java2",100);

        //将map2加到map1里面去
        map1.putAll(map2);//加进去的元素会覆盖原来的元素
        System.out.println(map1);

    }
}
